4 * Plugin générique de configuration pour SPIP
10 * @copyright (c) toggg, marcimat 2007-2008
11 * @link http://www.spip-contrib.net/
12 * @version $Id: cfg_id.php 36735 2010-03-28 21:25:09Z gilles.vincent@gmail.com $
15 if (!defined("_ECRIRE_INC_VERSION")) return;
18 * apres que le parseur a trouve les champs
24 function cfg_pre_charger_cfg_id($nom, &$cfg){
27 $cfg->champs
[$nom]['id'] = count($cfg->champs_id
);
28 $cfg->champs_id
[] = $nom;
30 // Cas des champs multi, si des champs (Y)
31 // sont declares id par la classe cfg_id,
32 // <input type='x' name='Yn' class='cfg_id'>
33 // on les ajoute dans le chemin pour retrouver les donnees
34 // #CONFIG{.../y1/y2/y3/...}
36 if (_request('_cfg_affiche')) {
37 $cfg->param
['cfg_id'] = implode('/', array_map('_request', $cfg->champs_id
));
49 function cfg_pre_traiter_cfg_id($nom, &$cfg){
51 // lorsque c'est un champ de type multi que l'on modifie
52 // et si l'identifiant a change, il faut soit le copier, soit de deplacer
54 // pour ca, on compare le hidden name='cfg_id' aux champs editables
55 // qui ont la classe css 'cfg_id'
56 if ($cfg->champs_id
) {
57 $new_id = implode('/', array_map('_request', $cfg->champs_id
));
58 if ($new_id != $cfg->param
['cfg_id']){
59 // si c'est un deplacement, on efface
60 if (!_request('_cfg_copier')) {
61 // et ne pas perdre les valeurs suite a l'effacement dans ce cas precis
66 $cfg->param
['cfg_id'] = $new_id;
67 // recreer un depot avec le nouvel identifiant
68 // (sinon les requetes ne creent pas les bons 'where')
69 include_spip('inc/cfg_config');
70 $cfg->depot
= new cfg_depot($cfg->param
['depot'], $cfg->params
);
71 // recharger le formulaire avec le nouvel identifiant (sinon les parametres
72 // <!-- param=valeur --> de formulaires qui contienent
73 // #ENV{cfg_id} ou #ENV{id} ne sont pas a jour)